﻿; 检测鼠标左键的真实状态
GetMouseButtonState(MouseButton) {
    ; 鼠标按钮常量
    static MK_LBUTTON := 0x01, MK_RBUTTON := 0x02, MK_MBUTTON := 0x04, MK_XBUTTON1 := 0x08, MK_XBUTTON2 := 0x10
    
    ; 检测指定的鼠标按钮是否按下
    state := DllCall("GetAsyncKeyState", "UInt", MouseButton)
    return (state & 0x8000) > 0
}

; 当按下Tab键时，检测鼠标左键状态并执行相应操作
Tab::
    if (GetMouseButtonState("VK_LBUTTON")) {
        ; 如果鼠标左键已按下，则抬起鼠标左键
        Click Up
    } else {
        ; 如果鼠标左键未按下，则按下鼠标左键
        Click Down
    }
    return

; 当释放Tab键时，如果之前按下了鼠标左键，则抬起鼠标左键
Tab Up::
    if (!GetMouseButtonState("VK_LBUTTON")) {
        Click Up
    }
    return
